/*********************************************************************
   Spoken Page stylesheet, written by Mark 'Tarquin' Wilton-Jones
                         Written 13/11/2004
Updated to version 1.7 3/12/2004 to support iframes/objects/applets/embeds

Opera 7.6+ stylesheet - attempts to make sense out of pages - for use
with speech component. This can be used as either a user stylesheet or
as an alternate stylesheet for your page:

<link rel="alternate stylesheet" type="text/css" href="spokenpage.css" title="Spoken Page">

Please keep this comment in the file.

See http://www.howtocreate.co.uk/jslibs/termsOfUse.html for terms of
use, and see http://www.howtocreate.co.uk/operaStuff/ to download
updates to this CSS file.
*********************************************************************/

/* title */
head title { display: block; }
title:before { content: "Page title. "; }

/* helpers */
link[rel="author"], link[rel="begin"], link[rel="contents"], link[rel="copyright"], link[rel="end"],
link[rel="first"], link[rel="glossary"], link[rel="help"], link[rel="home"], link[rel="index"],
link[rel="last"], link[rel="next"], link[rel="prev"], link[rel="previous"], link[rel="search"],
link[rel="start"], link[rel="toc"], link[rel="top"], link[rel="up"], link[rev="made"] {
counter-increment: linktags; display: inline-block; height: 1px; width: 1px; overflow: hidden; }
link[rel="alternate stylesheet"], link[rel="stylesheet alternate"] {
	counter-increment: stylesheettags; display: inline-block; height: 1px; width: 1px; overflow: hidden; }
head:after, head[title]:after {
	content: " Encountered "counter(linktags)" site navigation bar links and "counter(stylesheettags)" alternate stylesheets. ";
}
link[title]:after { display: none; }

/* headings */
h1:before { content: "Page heading. "; }
h2:before { content: "Section heading. "; }
h3:before { content: "Subsection heading. "; }
h4:before { content: "Minor heading. "; }
h5:before { content: "Lesser heading. "; }
h6:before { content: "Trivial heading. "; }

/* lists */
ol:before, ul:before { content: "Starting list. "; }
ol[title]:before, ul[title]:before { content: "Starting list with title "attr(title)". "; }
ol:after, ul:after, ol[title]:after, ul[title]:after { pause-before: 500ms; content: "Ending list. "; }
ol { counter-reset: olitemcounter; }
ul ul:before, ol ul:before, ul ol:before, ol ol:before { content: "Starting nested list. "; }
ul ul[title]:before, ol ul[title]:before, ul ol[title]:before, ol ol[title]:before { content: "Starting nested list with title "attr(title)". "; }
ul ul:after, ol ul:after, ul ol:after, ol ol:after, ul ul[title]:after, ol ul[title]:after, ul ol[title]:after, ol ol[title]:after { content: "Ending nested list. "; }
li:before { content: "List item. "; }
ol > li:before { counter-increment: olitemcounter; content: "List item "counter(olitemcounter)". "; }
dl:before { content: "Starting definition list. "; }
dl[title]:before { content: "Starting definition list with title "attr(title)". "; }
dl:after, dl[title]:after { pause-before: 500ms; content: "Ending definition list. "; }
dl dl:before { content: "Starting nested definition list. "; }
dl dl[title]:before { content: "Starting nested definition list with title"attr(title)". "; }
dl dl:after, dl dl[title]:after { content: "Ending nested definition list. "; }
dt:before { content: "Term. "; }
dd:before { content: "Definition. "; }

/* links */
a[href]:before { content: "Link. "; }
area[href]:before { content: "Image map link. "; }
a[href][target]:after, area[href][target]:after { pause-before: 500ms; content: attr(title)" - opens in another window. "; }
a[href][accesskey]:before { content: "Link with access key "attr(accesskey)". "; }
area[href][accesskey]:before { content: "Image map link with access key "attr(accesskey)". "; }
area { display: inline-block; height: 1px; width: 1px; overflow: hidden; content: attr(alt); }

/* Images */
img[ismap]:before { content: "Server side image map. "; }
img[usemap]:before { content: "Image map using map named "attr(usemap)". "; }
map:before { content: "Starting map named "attr(name)". "; }
map[title]:before { content: "Starting map named "attr(name)" with title "attr(title)". "; }
map:after, map[title]:after { pause-before: 500ms; content: "Ending map. "; }

/* embedded objects */
/* if using Opera 7.6 Preview 3, remove this section to prevent a crash but enable the next line instead */
/* object[title]:after, applet[title]:after, embed[title]:after, iframe[title]:after { content: normal; } */
object:before, applet:before, embed:before { content: "Embedded object or plug-in. "; }
object[standby]:before { content: "Embedded object or plug-in with loading text "attr(standby)". "; }
iframe:before { content: "Embedded page. "; }
frame { counter-increment: framecount; content: "Frame "counter(framecount); display: block; }

/* forms */
form:before { content: "Starting form. "; }
form[title]:before { content: "Starting form with title "attr(title)". "; }
form:after, form[title]:after { content: "Ending form. "; }
fieldset:before { content: "Starting form input group. "; }
fieldset[title]:before { content: "Starting form input group with title "attr(title)". "; }
fieldset:after, fieldset[title]:after { content: "Ending form input group. "; }
legend:before { content: "Form input group heading. "; }
legend[accesskey]:before { content: "Form input group heading with access key "attr(accesskey)". "; }
label:before { content: "Form input label. "; }
label[accesskey]:before { content: "Form input label with access key "attr(accesskey)". "; }

/* form inputs */
/***********************************************************************************************************************
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
If form inputs use :active :focus or :hover the input will become unusable. Disable page stylesheet or ensure that these
pseudo-classes are not used. If it causes too many problems, disable this block of styles.
***********************************************************************************************************************/
input:before, textarea:before { content: "Form text input. "; }
input[type="password"]:before { content: "Form password input. "; }
input[type="checkbox"]:before { content: "Form check-box input. "; }
input[type="radio"]:before { content: "Form group option input in group named "attr(name)". "; }
input[type="file"]:before { content: "File upload input. "; }
button:before, input[type="reset"]:before, input[type="submit"]:before, input[type="button"]:before, input[type="image"]:before { content: "Form push button. "; }
input[accesskey]:before, textarea[accesskey]:before { content: "Form text input with access key "attr(accesskey)". "; }
input[type="password"][accesskey]:before { content: "Form password input with access key "attr(accesskey)". "; }
input[type="checkbox"][accesskey]:before { content: "Form check-box input with access key "attr(accesskey)". "; }
input[type="radio"][accesskey]:before { content: "Form group option input in group named "attr(name)" - with access key "attr(accesskey)". "; }
input[type="file"][accesskey]:before { content: "File upload input with access key "attr(accesskey)". "; }
button[accesskey]:before, input[type="reset"][accesskey]:before, input[type="submit"][accesskey]:before, input[type="image"][accesskey]:before,
input[type="button"][accesskey]:before { content: "Form push button with access key "attr(accesskey)". "; }
input[type="hidden"]:before, select[title]:after { content: normal; }
/* select:after { content: "Form select option input."; }
breaks it so it is disabled. Opera are working on their own way to deal with select boxes */

/* special elements */
strong, b { -xv-voice-volume: loud; -xv-voice-pitch: 160; }
em, i, u { -xv-voice-stress: strong; -xv-voice-pitch: 160; }
abbr { speak: spell-out; }
ins:before { content: "Inserted text. "; }
del:before, s:before { content: "Deleted text. "; }

/* all (unless over-ridden) */
*[title]:after { pause-before: 500ms; content: attr(title)". "; }

/* try and keep it clean so the reader can read it, but minimising visual change */
title, title:before, h1:before, h2:before, h3:before, h4:before, h5:before, h6:before, ol:before, ol:after, ul:before,
ul:after, li:before, dl:before, dl:after, dt:before, dd:before, a[href]:before, a[href]:after, area[href]:before,

area[href]:after, img:before, map:before, map:after, object:before, applet:before, embed:before, iframe:before, form:before,
form:after, *[title]:after, input:after, textarea:after, button:after, input:before, textarea:before, button:before,
legend:before, fieldset:before, fieldset:after, label:before, frame:before, head:after, ins:before, del:before, s:before {
	display: inline-block; height: 1px; width: 1px; overflow: hidden; voice-family: young female; -xv-voice-pitch: 180; -xv-voice-volume: loud; speak: normal !important; }
* { voice-family: young male; -xv-voice-pitch: medium; -xv-voice-volume: medium; }
input, textarea, select, button { voice-family: child; -xv-voice-pitch: 200; -xv-voice-volume: 55; }
input, textarea, button { border: 1px solid #999; display: inline-block; }
input[type="hidden"] { border: none; display: none; }
